perm filename T5.SAI[AL,HE] blob sn#500998 filedate 1980-03-19 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	BEGIN "t5"
C00006 ENDMK
C⊗;
BEGIN "t5"

REQUIRE "DPYSUB.HDR[SUB,SYS]" SOURCE_FILE;

DEFINE	CRLF="('15&'12)",
	! = "COMMENT ",
	TIL="STEP 1 UNTIL";

define ttyset = "'047000400121";

INTEGER POG;
INTEGER ARRAY DISPLY[1:'3000];

PROCEDURE GRAPH (STRING des; REAL a,b,c,d,e,f);
  BEGIN "graph"
    INTEGER I;
    REAL DX,DY,MAX,MIN,x,y;
    STRING COM2;

    DEFINE X0 = -400;	! Graph orgin;
    DEFINE Y0 = -260;
    DEFINE NX = 800;	! Axis lengths;
    DEFINE NY = 700;
    DEFINE range = 70;

    SETFORMAT(1,0);
    DPYSET(DISPLY);
    MIN ← -range;
    MAX ← range;
    DX ← NX DIV (101-1);               ! Scale the axes;
    DY ← NY DIV (MAX-MIN);
    MKSCALE(X0,Y0,DX,0,100,0,100,"  Time");       ! Draw the axes;
    MKSCALE(X0,Y0,0,DY,40,MIN,MAX,"  "&des);

    AIVECT(X0,dy*(f-MIN)+Y0);            ! Graph it;
    FOR I ← 1 STEP 1 UNTIL 100 DO
      AVECT(dx*I+X0,
	dy*(a*(i/100.)↑5+b*(i/100.)↑4+c*(i/100.)↑3+d*(i/100.)↑2+e*(i/100.)+f-MIN)+Y0);

    DPYBIG(2);
    AIVECT(-200,-316);
    SETFORMAT(1,3);
    DPYSST("("&CVF(a)&","&CVF(b)&","&CVF(c)&","&CVF(d)&","&CVF(e)&","&CVF(f)&")");
    TYPLOC(-340,-500);
    DPYOUT(POG);
      quick_code
      hrroi 1,['004000000120]; comment [004000,,"P"];
      ttyset 1,     ;               ! this last stuff does an esc-P;
      end;
  END "graph";


STRING com,cop;
REAL a,b,c,v0,v1,dp;
INTEGER i;

POG←GETPOG;
com ← "p 0.0 0.0 10.0";

WHILE (com LOR '40) ≠ "e" DO
  BEGIN
  PRINT(crlf&"command V0 V1 ∂P :");
  LODED(com&crlf);
  cop ← com ← INCHWL;
  v0 ← REALSCAN(cop,i);
  v1 ← REALSCAN(cop,i);
  dp ← REALSCAN(cop,i);
  a ← 6*dp-3*v1-3*v0;
  b ← -15*dp+7*v1+8*v0;
  c ← 10*dp-4*v1-6*v0;

  CASE (com LOR '40) OF
    BEGIN

  ["p"] GRAPH("Position",a,b,c,0.0,v0,0.0);

  ["v"] GRAPH("Velocity",0.0,5*a,4*b,3*c,0.0,v0);

  ["a"] GRAPH("Acceleration",0.0,0.0,20*a,12*b,6*c,0.0);

  ["g"] GRAPH("Polynomial",v0,v1,dp,REALSCAN(cop,i),REALSCAN(cop,i),REALSCAN(cop,i));

  ["e"] PRINT("BYE");

  ELSE print("?")

    END;
END;

  quick_code
  hrroi 1,['004000000516]; comment [004000,,'400+"N"];
  ttyset 1,     ;               ! this last stuff does a brk-N;
  end;
  CALL(0,"EXIT");      


END "t5";